package com.scrm.server.wx.cp.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.scrm.api.wx.cp.dto.WxFissionStageQueryDTO;
import com.scrm.api.wx.cp.dto.WxFissionStageSaveDTO;
import com.scrm.api.wx.cp.entity.WxFissionStage;
import com.scrm.api.wx.cp.vo.WxFissionStageVO;

import java.util.Date;
import java.util.List;
import java.util.Map;

/**
 * 企微应用宝-阶梯任务信息表 服务类
 * @author xxh
 * @since 2022-03-21
 */
public interface IWxFissionStageService extends IService<WxFissionStage> {

    /**
     * 查询列表
     * @author xxh
     * @date 2022-03-21
     * @param dto 请求参数
     */
    List<WxFissionStageVO> queryList(WxFissionStageQueryDTO dto);

    /**
     * 校验是否存在
     * @author xxh
     * @date 2022-03-21
     * @param id 企微应用宝-阶梯任务信息表id
     * @return com.scrm.api.wx.cp.entity.WxFissionStage
     */
    WxFissionStage checkExists(String id);

    /**
     * 构建新增的对象
     * @param taskId
     * @param extCorpId
     * @param stageSaveDTOS
     * @return
     */
    List<WxFissionStage> buildFissionStage(String taskId, String extCorpId, Date expireTime, List<WxFissionStageSaveDTO> stageSaveDTOS);

    /**
     * 更新阶段信息(先全删再新增，实在不想维护了)
     * @param taskId
     * @param stageSaveDTOS
     */
    void updateFissionStage(String taskId, String extCorpId, Date expireTime, List<WxFissionStageSaveDTO> stageSaveDTOS);

    /**
     * 获取这个任务的阶段
     * @param extCorpId
     * @param taskId
     * @return
     */
    Map<Integer, Integer> getStageNumMap(String extCorpId, String taskId);
}
